    #ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMessageBox>
#include <QStackedWidget>
#include <QCloseEvent>
#include <QLabel>
#include "databasemanager.h"

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

// 前向声明
class UserManagementWidget;
class ItemManagementWidget;
class RecordsViewWidget;
class ReportsWidget;
class ProfileWidget;

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    
    // 设置当前登录用户
    void setCurrentUser(const UserInfo& userInfo);

signals:
    // 退出登录信号
    void logoutRequested();

private slots:
    // 退出登录处理
    void onLogoutClicked();
    // 直接退出登录（无确认对话框）
    void onDirectLogout();
    // 侧边栏按钮点击处理
    void onSideBarButtonClicked();

protected:
    // 重写窗口关闭事件
    void closeEvent(QCloseEvent *event) override;

private:
    // 根据用户角色配置界面权限
    void configureUserPermissions(const QString& role);
    // 更新状态栏用户信息
    void updateUserStatus();
    // 初始化工作区堆栈
    void setupWorkArea();
    // 设置状态栏
    void setupStatusBar();
    // 切换到指定界面
    void switchToView(int viewIndex);
    
    // UI对象
    Ui::MainWindow *ui;
    // 当前用户信息
    UserInfo m_currentUser;
    // 工作区堆栈
    QStackedWidget *workAreaStack;
    // 用户管理界面
    UserManagementWidget *userManagementWidget;
    // 库存管理界面
    ItemManagementWidget *itemManagementWidget;
    // 操作记录界面
    RecordsViewWidget *recordsViewWidget;
    // 统计报表界面
    ReportsWidget *reportsWidget;
    // 个人信息界面
    ProfileWidget *profileWidget;
    // 状态栏标签
    QLabel *userLabel;
    QLabel *dbLabel;
};
#endif // MAINWINDOW_H
